package com.sll.hosptials.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sll.hosptials.controller.req.*;
import com.sll.hosptials.controller.resp.LoginResp;
import com.sll.hosptials.controller.resp.UserDetailResp;
import com.sll.hosptials.controller.resp.UserInfoPageResp;
import com.sll.hosptials.model.DictInfo;
import com.sll.hosptials.model.UserInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * @author shaolulu
 * @description 针对表【user_info(用户表)】的数据库操作Service
 * @createDate 2024-01-02 14:22:09
 */
public interface UserInfoService extends IService<UserInfo> {

    /**
     * 用户信息分页
     *
     * @param userInfoPageReq
     * @return
     */
    Page<UserInfoPageResp> page(UserInfoPageReq userInfoPageReq);


    /**
     * 用户账号密码登录，返回token
     *
     * @param req
     * @return
     */
    LoginResp login(LoginReq req);

    /**
     * 新增用户信息
     *
     * @param req
     * @return
     */
    Boolean addOrUpdateUserInfo(AddUserInfoReq req);

    /**
     * 删除用户信息
     *
     * @return
     */
    Boolean delUserInfo(IdsReq req);

    /**
     * 禁用用户账号
     *
     * @param req
     * @return
     */
    Boolean disableUser(IdReq req);

    /**
     * 获取用户详情，包括组织、角色
     *
     * @param req
     * @return
     */
    UserDetailResp userDetail(IdReq req);


    /**
     * 测试hutool，构建树结构
     *
     * @return
     */
    List<DictInfo> getHutoolTree();

    /**
     * 文件大批量上传--线程池
     * @param multipartFile
     * @return
     */
    Boolean importUserInfo(MultipartFile multipartFile) throws IOException;

    Boolean delete( IdReq req);
}
